package com.ztom.agent.config;

import lombok.Data;

/**
 * @author ZhangTao
 */
@Data
public class TraceConfig {

    /**
     * 被代理的应用名, 上报用
     */
    private String appName;
    /**
     * 要扫描的包名
     */
    private String includePackages;
    /**
     * 插件
     */
    private String plugins;
    /**
     * 不扫描的包名
     */
    private String excludePackages;
    /**
     * 不注入的方法
     */
    private String excludeMethods;
    /**
     * 是否不注入私有方法
     */
    private boolean excludePrivateMethod;
    /**
     * 是否打印Debug日志
     */
    private boolean printDebugLog;
    /**
     * 日志文件存储路径
     */
    private String logFilePath;
    /**
     * 日志滚动时间
     */
    private String logRollingTimeUnit;
    /**
     * 日志文件保留个数
     */
    private int logReserveCount;
    /**
     * 是否保存修改过的class文件
     */
    private boolean dumpClassFile;
    /**
     * 保存修改过的class文件的路径
     */
    private String dumpClassFilePath;

    private TraceConfig() {
        // do nothing
    }

    public static TraceConfig getInstance() {
        return Holder.CONFIG;
    }

    private static class Holder{
        private static final TraceConfig CONFIG = new TraceConfig();
    }
}
